//#include<bits/stdc++.h>
//using namespace std;
//int* mark(int x, int w, int** dp)
//{
//	int *p = nullptr;
//	int xi, xj = 0;
//	// x = 6 w = 6
//	// xi = 0 xj =5
//	// x = 12 w = 6
//	// xi = 1 xj = 12-6*2 = 0 ->0
//	// x = 11 w = 6
//	// xi =
//	xi = (x / w) - 1;
//	if ((x / w) % 2 == 0) {//偶数行
//		if (x / w == 0) {
//			xj = (12 - (xi) * 6);
//			if (xj != 0) {
//				xj = 6 - xj;
//			}
//			dp[xi][xj] = 1;
//		}
//	} else {//
//		xj = (12 - xi * 6) - 1;
//		dp[xi][xj] = 1;
//	}
//
//	p = &dp[xi][xj];
//
//	return p;
//}
//int main()
//{
//	int w, m, n;
//	cin >> w >> m >> n;
//	if (m > n) {
//		swap(m, n);
//	}
//
//	// 6 6/6
//	int dp[m / w][w];
//	memset(dp, 0, sizeof(dp));
//	// 6 (1-1,6-1)
//	// 12(12/6 - 1 , (12/6-1)+(6-) )
//	int p = mark(n, w, dp );
//
////
////	cout << dp[(m / w) - 1][];
//	return 0;
//}
#include <iostream>
using namespace std;
int main()
{
	int w, m, n;
	cin >> w >> m >> n;
	int mi = (m - 1) / w ;// 计算m在第几行
	int mj = 0;//计算m在第几列
	if (mi % 2 == 1) {// 偶数数行 0 1 2 3 
		mj = (w - 1) - (m - 1) % w;
	} else {//基数行
		mj = (m - 1) % w;
	}
	int ni = (n - 1) / w ;// 计算m在第几行
	int nj = 0;//计算m在第几列
	if (ni % 2 == 1) {// 偶数数行 0 1 2 3 
		nj = (w - 1) - (n - 1) % w;
	} else {//基数行
		nj = (n - 1) % w;
	}
	cout<<abs(mj-nj)+abs(mi-ni);
	return 0;
}
